from data import dataHandle

def studentToJson(data):
    students = []
    for item in data:
        student = {
            "id": item[0],
            "智学号": item[1],
            "密码": item[2], # 注意：实际使用中建议加密存储
            "姓名": item[3],
            "性别": item[4],
            "班级": item[5],
            "选科组合": item[6]
        }
        students.append(student)
    return students

'''
获取所有的学生信息
'''
def getAllStudents():
    datas=dataHandle(u"""select * from 学生信息表""")

    return studentToJson(datas)

'''
如果选择具体的班级，则classid为班级名称，如"2"、"3"等；如果选择全部，则classid值为"all"
请根据班级名称查找该班级的学生信息
'''
def getStudentsByClass(classid):
    if classid!="all":
        datas=dataHandle(u"""select * from 学生信息表 where 班级='%s'"""%classid)
    else:
        datas=dataHandle(u"""select * from 学生信息表""")

    return studentToJson(datas)

'''
前端传过来的参数nameOrStuid可能是智学号，也有可能是姓名，有可能是完整的智学号或姓名，也有可能只是其中的一部分
请先判断，然后进行模糊查询
'''
def getStudentsLikeNameOrStuid(nameOrStuid):
    #用nameOrStuid.isdigit()判断输入前端传入的数据是不是数字，如果是数字结果为True，否则为False
    if nameOrStuid.isdigit():
        datas=dataHandle(u"""select * from 学生信息表 where 智学号 like '%%%s%%'"""%nameOrStuid)
    else:
        datas=dataHandle(u"""select * from 学生信息表 where 姓名 like '%%%s%%'"""%nameOrStuid)

    return studentToJson(datas)

'''
新建一个学生
学生信息在studentData中，studentData是一个字典
studentData示例：{'智学号': '59633945', '密码': 'lbzx1234', '姓名': '贲曾雷', '性别': '男', '班级': '11', '选科组合': '理、化、生'}
'''
def addStudent(studentData):
    dataHandle(u"""insert into 学生信息表(智学号,密码,姓名,性别,班级,选科组合) values('%s','%s','%s','%s','%s','%s')"""%(studentData["智学号"],studentData["密码"],studentData["姓名"],studentData["性别"],studentData["班级"],studentData["选科组合"]),"insert")
    result=dataHandle(u"select top 1 * from 学生信息表 order by id DESC")
    return studentToJson(result)
 
'''
删除一个学生
参数id是学生信息表的主键，根据id字段删除对应的记录
'''
def deleteStudent(id):
    dataHandle(u"""delete from 学生信息表 where ID=%d"""%id,"delete")

'''
编辑一个学生
学生信息在studentData中，studentData是一个字典
studentData示例：{'智学号': '59633945', '密码': 'lbzx1234', '姓名': '贲曾雷', '性别': '男', '班级': '11', '选科组合': '理、化、生', 'ID': 19}
'''
def editStudent(studentData):
    dataHandle(u"""update 学生信息表 set 智学号='%s',密码='%s',姓名='%s',性别='%s',班级='%s',选科组合='%s' where ID=%d"""%(studentData["智学号"],studentData["密码"],studentData["姓名"],studentData["性别"],studentData["班级"],studentData["选科组合"],int(studentData["ID"])),"update")